<?php
$mk=mktime(date("his"));
//$nuevo=null;
$filtro=null;
$nuevo=array("url"=>"Sigesp/filtrado_replica/".DVENTANA."/".DLOAD,"update"=>"tabs_123");
$exel=null;
$cal=null;
$pdf=null;
//$this->Interfaz->botones($nuevo,$filtro,$pdf,$exel,$cal);

$i_edit = $this->Interfaz->img('iconos/icons/editar.png','Modificar','Modificar',15,15);
$i_bor = $this->Interfaz->img('iconos/icons/borrar.png',null,null,15,15);
$i_nuevo = $this->Interfaz->img('iconos/icons/nuevo.png',null,null,15,15);
$i_ver = $this->Interfaz->img('iconos/icons/nuevoregistro.png',null,null,15,15);
$i_pdf= $this->Interfaz->img('iconos/icons/pdf.png',null,null,15,15);
$i_pdf2= $this->Interfaz->img('iconos/icons/_printer.png',null,null,15,15);

if(file_exists($ruta.$archivo))
{
    set_time_limit(0);
    ini_set('memory_limit',-1);
	$this->PhpExcel->Excel($ruta.$archivo);
	$objPHPExcel = $this->PhpExcel->leer->load($ruta.$archivo);
    $nhm=$objPHPExcel->getSheetCount()-1;
    $datafinal=array();
    $errores=array();
    $precios_omitidos=array();
    for($nh=0;$nh<$nhm;$nh++){
        $objPHPExcel->setActiveSheetIndex($nh);
        $objWorksheet = $objPHPExcel->getActiveSheet();
        $ultimaFila = $objWorksheet->getHighestRow();
        $ultimaColumna = $objWorksheet->getHighestColumn();
        $ultimaColumnaIndice = PHPExcel_Cell::columnIndexFromString($ultimaColumna);
        $error_formato=0;    
        $datos=array();
        $recorrido=array();
        for ($col = 0; $col < $ultimaColumnaIndice; ++$col){
            if($error_formato) break;
            $paso=0;
            for ($fila = 1; $fila <= $ultimaFila; ++$fila){
        		$codCliente = $objWorksheet->getCellByColumnAndRow($col, 2)->getValue();
                $clientes = array();
                if(!in_array(strtolower($codCliente), array('codigo', 'programa'))){
                    $in_v=$nh-1;
                    if($fila==1){
                        $datos[$fila][$col]['cliente']=$objWorksheet->getCellByColumnAndRow($col, 1)->getValue();
                        $datos[$fila][$col]['lapzo']=$objWorksheet->getCellByColumnAndRow($col, 2)->getValue();
                    }
                    else{
                        $datos[$fila][$col]['cliente']=$datos[1][$col]['cliente'];
                        $datos[$fila][$col]['lapzo']=$datos[1][$col]['lapzo'];
                    }
                    if($nh>0 && $paso==0){
                        $paso=1;
                        if(isset($datafinal[$in_v."3"][$col-1]['cliente']) && isset($datafinal[$in_v."3"][$col-1]['lapzo']) ){
                            if($datafinal[$in_v."3"][$col-1]['cliente'] == $datos[1][$col]['cliente'] && $datafinal[$in_v."3"][$col-1]['lapzo'] ==$datos[1][$col]['lapzo']){
                                $bien=1;
                            }
                            else $bien=0;
                        }
                        else{
                            $bien=1;
                        }
                     }else $bien=1;

                    if($bien==1){                    
                        $datos[$fila][$col]['programa']=$objWorksheet->getCellByColumnAndRow($ultimaColumnaIndice-1, $fila)->getValue();
                    	$datos[$fila][$col]['codigo']=$objWorksheet->getCellByColumnAndRow(0, $fila)->getCalculatedValue();
                        $datos[$fila][$col]['precio']=$objWorksheet->getCellByColumnAndRow($col, $fila)->getCalculatedValue();
                        $nro_fila=$objWorksheet->getCellByColumnAndRow($col, $fila)->getRow();
                        $letra_columna=$objWorksheet->getCellByColumnAndRow($col, $fila)->getColumn();
                        $datos[$fila][$col]['codigo']=trim($datos[$fila][$col]['codigo']);
                        if(is_numeric($datos[$fila][$col]['codigo'])){
                            $omitir=1;
                            if( strlen($datos[$fila][$col]['codigo']) !=18 || empty($datos[$fila][$col]['codigo']) ){ 
                                $datos[$fila][$col]['codigo']="<font color=\"red\"><b>".$datos[$fila][$col]['codigo']."</b></font>";
                                $omitir=0;
                            }
                            if(empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == ''){
                                $omitir=0;
                            }
                            if( !($datos[$fila][$col]['lapzo'] >= 0) ){
                                $omitir=0;
                            }
                            if( empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == ''){
                                $omitir=0;
                            }
                            if( !empty($datos[$fila][$col]['precio']) && 
                                ($datos[$fila][$col]['precio'] < 0.1 || !is_numeric($datos[$fila][$col]['precio'])
                                    )){                                
                                $omitir=0;
                            }
                            $err_msg = '';
                            $err_msg .= (empty($datos[$fila][$col]['codigo']) || strlen($datos[$fila][$col]['codigo']) !=18 ) ? 'Codigo Invalido, ' : '';
                           // $err_msg .= (in_array($datos[$fila][$col]['codigo'], $clientes)) ? 'Duplicado, ' : '';
                            $err_msg .= ($datos[$fila][$col]['lapzo'] >= 0) ? '' : 'Lapzo Invalido, ';
                            $err_msg .= (empty($datos[$fila][$col]['precio']) || $datos[$fila][$col]['precio'] == '') ? 'Precio Invalido, ' : '';
                            $err_msg .= ( !empty($datos[$fila][$col]['precio']) && ($datos[$fila][$col]['precio'] < 0.1 || !is_numeric($datos[$fila][$col]['precio']))) ? 'Precio Invalido, ' : '';
                            $err_msg .= (empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == '') ? 'Cliente Invalido, ' : '';
                        	$err_msg .= (empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == '') ? 'Programa Invalido, ' : '';
                            if ($err_msg == '') $err_msg = 1;
                            $clientes[] = $datos[$fila][$col]['codigo'];


                            $datafinal[$nh.$fila][]=array('error_msg' => $err_msg,
                                                      'cliente' => $datos[$fila][$col]['cliente'],
                                                      'lapzo' => $datos[$fila][$col]['lapzo'],
                                                      'precio' => $datos[$fila][$col]['precio'],
                                                      'codigo' => $datos[$fila][$col]['codigo'],
                                                      'programa' => $datos[$fila][$col]['programa'],
                                                      'scvlines' => $fila/*,
                                                      'data' => $dataPorColumna*/);
                            if($err_msg !=1 && $nro_fila>2){
                                //echo "<br />error precio ".$omitir;
                                if($omitir){
                                    $precios_omitidos[]=array('error_msg' => $err_msg,
                                                      'cliente' => $datos[$fila][$col]['cliente'],
                                                      'lapzo' => $datos[$fila][$col]['lapzo'],
                                                      'precio' => $datos[$fila][$col]['precio'],
                                                      'codigo' => $datos[$fila][$col]['codigo'],
                                                      'programa' => $datos[$fila][$col]['programa'],
                                                      'Celda' => $letra_columna.$nro_fila,
                                                      'Hoja' => $nh+1,
                                                      'scvlines' => $fila);
                                }
                                else{
                                    $errores[]=array('error_msg' => $err_msg,
                                                      'cliente' => $datos[$fila][$col]['cliente'],
                                                      'lapzo' => $datos[$fila][$col]['lapzo'],
                                                      'precio' => $datos[$fila][$col]['precio'],
                                                      'codigo' => $datos[$fila][$col]['codigo'],
                                                      'programa' => $datos[$fila][$col]['programa'],
                                                      'Celda' => $letra_columna.$nro_fila,
                                                      'Hoja' => $nh+1,
                                                      'scvlines' => $fila);
                                }
                                    
                            }
                        }
                        else{
                            if($nro_fila>2){
                                $datos[$fila][$col]['codigo']="<font color=\"red\"><b>".$datos[$fila][$col]['codigo']."</b></font>";
                                $omitir=0;
                                $err_msg = '';
                                $err_msg .= (!is_numeric($datos[$fila][$col]['codigo']) ) ? 'Codigo Invalido, ' : '';
                                $err_msg .= (in_array($datos[$fila][$col]['codigo'], $clientes)) ? 'Duplicado, ' : '';
                                $err_msg .= ($datos[$fila][$col]['lapzo'] >= 0) ? '' : 'Lapzo Invalido, ';
                                $err_msg .= (empty($datos[$fila][$col]['precio']) || $datos[$fila][$col]['precio'] == '') ? 'Precio Invalido, ' : '';
                                $err_msg .= (empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == '') ? 'Cliente Invalido, ' : '';
                                $err_msg .= (empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == '') ? 'Programa Invalido, ' : '';
                                $errores[]=array('error_msg' => $err_msg,
                                                      'cliente' => $datos[$fila][$col]['cliente'],
                                                      'lapzo' => $datos[$fila][$col]['lapzo'],
                                                      'precio' => $datos[$fila][$col]['precio'],
                                                      'codigo' => $datos[$fila][$col]['codigo'],
                                                      'programa' => $datos[$fila][$col]['programa'],
                                                      'Celda' => $letra_columna.$nro_fila,
                                                      'Hoja' => $nh+1,
                                                      'scvlines' => $fila);
                            }
                        }
                                             
                    }
                    else{
                        $error_formato=1;
                        break;
                    }
                }
            }
        }
    }
    if($error_formato){        
        $datafinal=null;
        $this->Vista->mensaje('Error en el formato del archivo','ALERTA');
    }
     // echo "<pre>";pr($datafinal);echo "</pre>";
    $no = $this->Interfaz->img('iconos/icons/cross.gif','Dato Erroneo','Dato Erroneo',15,15);
    $compactada=serialize($datafinal);
    $final=urlencode($compactada);
    //$compa=serialize($errores);
    //$errores_final=urlencode($compa);
    $titulos = array();
    $lapzo = array();
    $titulos[]='Codigo';

    if(isset($datafinal["03"]))
        foreach($datafinal["03"] as $valor)
        {
            if($valor['cliente'] != '' and $valor['lapzo'] >=0)  $titulos[] = $valor['cliente'].' '.$valor['lapzo'];
            else  $titulos[] = '';
            $lapzo[] = $valor['lapzo'];
        }
    $titulos[]='Programa';
    echo "antes";

    //echo $this->Interfaz->formulario($mk.'ed');
    echo "el formulario => ".$id_formulario;
   
   // echo $this->Interfaz->inputoculto('errores',$errores_final);

    echo $this->Interfaz->filset('Precios a Cargar',0,0,'gray',0);
    ?>
    <br />
    <table border='0' cellpadding='0' cellspacing='0' width='98%' align='center' style="border:5;">
        <tr>
            <td class="labeln" valign='top'>
            <div id="photolayesss" style="z-index: 1; width: 800px;height: 188px;   border-width:1px; border-style:solid; border-color:#ff9900;">
            <?php
            $codigos_finales_array=array();
            $codigos_finales='(';
            $conta=0;
            $this->Vista->paginador_inicio();
            foreach ($datafinal as $valor)
            {                
                $v3=null;
                $v3=array();
                if(!in_array($valor[0]['codigo'], $codigos_finales_array)){
                    $codigos_finales_array[] = $valor[0]['codigo'];
                    $codigos_finales.= "'".$valor[0]['codigo']."',";
                }
                
                if(!empty($valor[0]['codigo']))  $v3[]=array($valor[0]['codigo']);
                else $v3[]=array($no,0);

                foreach($valor as $linea)
                { 
                    if(!empty($linea['precio']))  $v3[]=array($this->Interfaz->miles($linea['precio']));
                    else $v3[]=array($no,0);
                }
                $v3[]=array($valor[0]['programa']);
                $this->Vista->paginador_td($busq,$v3);
                $conta++; 
            }
            $codigos_finales = substr($codigos_finales,0,-1).')';
            $v2=array();
            $con=0;
            foreach($titulos as $valor)
            { 
                //if($valor != ''){ $ta=($con==0) ? 100 : 70; $v2[]=array($valor,$ta,'c');}
                //else $v2[]=array($no,70,'c');
                if($con==0)   $v2[]=array($valor,120,'c');
                else if(($con+1)==count($titulos))   $v2[]=array($valor,'auto','c');
                else  $v2[]=array($valor,80,'r');

                $con++;
            }
            $this->Vista->paginador_fin(5,$v2,1,1,'PRECIOS');
            ?>
            </div> 
            </td>
        </tr>
        <tr>
            <td>
            <table border='0' width='100%'><tr>
                <td valign='top' width='450px'>
                <div id="alertas" >
                <font style="font-size:11px;">
                    <p><?php echo "Si el cliente o el plazo contienen la imagen $no, no se procesar&aacute; la columna completa"; ?></p>
                    <p><?php echo "Si el c&oacute;digo esta de color <b><font color='red'>Rojo</font></b> no se procesar&aacute; la fila completa"; ?></p>
                    <p><?php echo "Si el precio contienen la imagen $no, no se procesar&aacute; ese Precio"; ?></p>
                     
                </font>
                </div>
                </td>
                <td align='right'>
                    <font style="font-size:11px;">
                    <?php
                    if(count($errores)>0 || count($omitir)>0){
                        $_SESSION['errores_precios']=$errores;
                        $_SESSION['precios_omitidos']=$precios_omitidos;
                        echo "<font color='red'><b> Se encontraron ".count($errores)." errores en el Archivo </b></font> ";
                        echo $this->Interfaz->boton('Ver Detalles Errores','Sigesp/ver_detalles_error/1','ver_detalles_error'); 
                        echo "<br/><font color='red'><b> Se Omitiran ".count($precios_omitidos)." Precios del Archivo </b></font> ";
                        echo $this->Interfaz->boton('Ver Detalles Precios','Sigesp/ver_detalles_error/2','ver_detalles_error'); 
                    }
                    else{
                        unset($_SESSION['errores_precios']);
                        unset($_SESSION['precios_omitidos']);
                    }
                    ?>
                   
                </td>
            </tr>
            <tr><td colspan='2' align='center'>
                <?php 
                if(!$error_formato){
                    echo $this->Interfaz->inputoculto('opciones',$opciones);
                    echo $this->Interfaz->inputoculto('datos',$final);                    
                    echo $this->Interfaz->inputoculto('codigos_finales',$codigos_finales);
                    $compactada=serialize($codigos_finales_array);
                    $final=urlencode($compactada);
                    echo $this->Interfaz->inputoculto('codigos_finales_array',$final);
                    if(count($errores)==0 && count($datafinal)>0){
                 ?>
                 <input type='button' id='abuttonarchivo' value='PROCESAR' style="cursor:pointer;height:23px; width: 135px;" class="x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon x-btn-center" Onclick="EnviaFormulario('<?php echo DLOAD;?>','Sigesp/procesar_archivo_lista_precio','<?php echo $id_formulario;?>','guardando');"/>
                <?php
                    }
                }
                ?>
            </td></tr></table>
            </td>
        </tr>
    </table>

<br />
<?php echo $this->Interfaz->filset();?>
</div>
<div id='ver_detalles_error'></div>
<?php
}
else 
{
    echo $this->Interfaz->filset('Precios a Cargar',0,0,'gray',0);?>
    <br />
    <table border='0' cellpadding='15' cellspacing='15' width='98%' align='center' style="border:5;">
    <tr>
        <td class="labeln" valign='top'>
            <div id="photolayesss" style="z-index: 1; width: 770px;height: 168px;   border-width:1px; border-style:solid; border-color:#ff9900;">
        <?php echo "Archivo no existe"; ?></div> <br />
        </td>
    </tr>
    </table>
    <br />
<?
echo $this->Interfaz->filset();
}
?>